#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
//#include <assert.h>

typedef char BTDataType;
typedef struct BianryTreeNode
{
	BTDataType data;
	struct BianryTreeNode* left;
	struct BianryTreeNode* right;
}BTNode;

void PreOrder(BTNode* root);
void InOrder(BTNode* root);
void PostOrder(BTNode* root);

int BinaryTreeSize(BTNode* root);
int BinaryTreeLeafSize(BTNode* root);
int BinaryTreeLevelKSize(BTNode* root, int k);
int BinaryTreeDepth(BTNode* root);
BTNode* BinaryTreeFind(BTNode* root, BTDataType x);
void BinaryTreeDestory(BTNode** root);
void LevelOrder(BTNode* root);
bool BinaryTreeComplete(BTNode* root);